From 49f6907f342ada4975ca38670943ea6658385bb4 Mon Sep 17 00:00:00 2001 From: "kfraser@localhost.localdomain" Date: Thu, 14 Dec 2006 10:00:56 +0000 Subject: [PATCH] [XEND] Activate a declared external device migration script for all devices and all save modes. Signed-off-by: Brendan Cully --- tools/python/xen/xend/server/DevController.py | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/tools/python/xen/xend/server/DevController.py b/tools/python/xen/xend/server/DevController.py index b8dc8f4763..7f738ab67e 100644 --- a/tools/python/xen/xend/server/DevController.py +++ b/tools/python/xen/xend/server/DevController.py @@ -19,13 +19,15 @@ from threading import Event import types -from xen.xend import sxp +from xen.xend import sxp, XendRoot from xen.xend.XendError import VmError from xen.xend.XendLogging import log from xen.xend.xenstore.xstransact import xstransact, complete from xen.xend.xenstore.xswatch import xswatch +import os + DEVICE_CREATE_TIMEOUT = 100 HOTPLUG_STATUS_NODE = "hotplug-status" HOTPLUG_ERROR_NODE = "hotplug-error" @@ -48,6 +50,8 @@ xenbusState = { 'Closed' : 6, } +xroot = XendRoot.instance() + xenbusState.update(dict(zip(xenbusState.values(), xenbusState.keys()))) @@ -313,6 +317,16 @@ class DevController: Make sure that the migration has finished and only then return from the call. """ + tool = xroot.get_external_migration_tool() + if tool: + log.info("Calling external migration tool for step %d" % step) + fd = os.popen("%s -type %s -step %d -host %s -domname %s" % + (tool, self.deviceClass, step, dst, domName)) + for line in fd: + log.info(line.rstrip()) + rc = fd.close() + if rc: + raise VmError('Migration tool returned %d' % (rc >> 8)) return 0 @@ -320,6 +334,16 @@ class DevController: """ Recover from device migration. The given step was the last one that was successfully executed. """ + tool = xroot.get_external_migration_tool() + if tool: + log.info("Calling external migration tool") + fd = os.popen("%s -type %s -step %d -host %s -domname %s -recover" % + (tool, self.deviceClass, step, dst, domName)) + for line in fd: + log.info(line.rstrip()) + rc = fd.close() + if rc: + raise VmError('Migration tool returned %d' % (rc >> 8)) return 0 -- 2.30.2